package com.cmyshare.design.builderPattern;

/**
 * @version 1.0
 * @Author cmy
 * @Date 2023/10/11 11:28
 * @desc 6、测试类
 */
public class BuilderTest {
    /**
     * 建造者模式：将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。
     * @param args
     */
    public static void main(String[] args) {
        //实例化Person对象的整体构造器
        PersonDirector pd = new PersonDirector();
        //实例化Person对象的构造器，向上转型Person对象的构造接口PersonBuilder
        //在new ManBuilder()时也完成new Man()向上转型Person
        PersonBuilder personBuilder = new ManBuilder();
        //通过PersonBuilder构造接口创建Person构造对象,这里由于接口回调，会调用ManBuilder下的方法
        Person person = pd.constructPerson(personBuilder);
        //输出构造Person内容
        System.out.println(person.getHead());
        System.out.println(person.getBody());
        System.out.println(person.getFoot());
    }
}
